'\" t
.\"     Title: vacuumdb
.\"    Author: The PostgreSQL Global Development Group
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\"      Date: 2011-12-01
.\"    Manual: PostgreSQL 9.1.2 Documentation
.\"    Source: PostgreSQL 9.1.2
.\"  Language: English
.\"
.TH "VACUUMDB" "1" "2011-12-01" "PostgreSQL 9.1.2" "PostgreSQL 9.1.2 Documentation"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
vacuumdb \- garbage\-collect and analyze a PostgreSQL database
.\" vacuumdb
.SH "SYNOPSIS"
.HP \w'vacuumdb\ 'u
vacuumdb [\fIconnection\-option\fR...] [[\-\-full] | [\-f]] [[\-\-freeze] | [\-F]] [[\-\-verbose] | [\-v]] [[\-\-analyze] | [\-z]] [[\-\-analyze\-only] | [\-Z]] [\-\-table\ |\ \-t\ \fItable\fR\ [(\ \fIcolumn\fR\ [,\&.\&.\&.]\ )]] [\fIdbname\fR]
.HP \w'vacuumdb\ 'u
vacuumdb [\fIconnection\-option\fR...] [[\-\-full] | [\-f]] [[\-\-freeze] | [\-F]] [[\-\-verbose] | [\-v]] [[\-\-analyze] | [\-z]] [[\-\-analyze\-only] | [\-Z]] [[\-\-all] | [\-a]]
.SH "DESCRIPTION"
.PP

vacuumdb
is a utility for cleaning a
PostgreSQL
database\&.
vacuumdb
will also generate internal statistics used by the
PostgreSQL
query optimizer\&.
.PP

vacuumdb
is a wrapper around the SQL command
\fBVACUUM\fR(7)\&. There is no effective difference between vacuuming and analyzing databases via this utility and via other methods for accessing the server\&.
.SH "OPTIONS"
.PP

vacuumdb
accepts the following command\-line arguments:
.PP
\fB\-a\fR, \fB\-\-all\fR
.RS 4
Vacuum all databases\&.
.RE
.PP
\fB[\-d]\fR\fB \fR\fB\fIdbname\fR\fR, \fB[\-\-dbname=]\fR\fB\fIdbname\fR\fR
.RS 4
Specifies the name of the database to be cleaned or analyzed\&. If this is not specified and
\fB\-a\fR
(or
\fB\-\-all\fR) is not used, the database name is read from the environment variable
\fBPGDATABASE\fR\&. If that is not set, the user name specified for the connection is used\&.
.RE
.PP
\fB\-e\fR, \fB\-\-echo\fR
.RS 4
Echo the commands that
vacuumdb
generates and sends to the server\&.
.RE
.PP
\fB\-f\fR, \fB\-\-full\fR
.RS 4
Perform
\(lqfull\(rq
vacuuming\&.
.RE
.PP
\fB\-F\fR, \fB\-\-freeze\fR
.RS 4
Aggressively
\(lqfreeze\(rq
tuples\&.
.RE
.PP
\fB\-q\fR, \fB\-\-quiet\fR
.RS 4
Do not display progress messages\&.
.RE
.PP
\fB\-t \fR\fB\fItable\fR\fR\fB [ (\fR\fB\fIcolumn\fR\fR\fB [,\&.\&.\&.]) ]\fR, \fB\-\-table=\fR\fB\fItable\fR\fR\fB [ (\fR\fB\fIcolumn\fR\fR\fB [,\&.\&.\&.]) ]\fR
.RS 4
Clean or analyze
\fItable\fR
only\&. Column names can be specified only in conjunction with the
\fB\-\-analyze\fR
or
\fB\-\-analyze\-only\fR
options\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBTip\fR
.ps -1
.br
If you specify columns, you probably have to escape the parentheses from the shell\&. (See examples below\&.)
.sp .5v
.RE
.RE
.PP
\fB\-v\fR, \fB\-\-verbose\fR
.RS 4
Print detailed information during processing\&.
.RE
.PP
\fB\-V\fR, \fB\-\-version\fR
.RS 4
Print the
vacuumdb
version and exit\&.
.RE
.PP
\fB\-z\fR, \fB\-\-analyze\fR
.RS 4
Also calculate statistics for use by the optimizer\&.
.RE
.PP
\fB\-Z\fR, \fB\-\-analyze\-only\fR
.RS 4
Only calculate statistics for use by the optimizer (no vacuum)\&.
.RE
.PP
\fB\-?\fR, \fB\-\-help\fR
.RS 4
Show help about
vacuumdb
command line arguments, and exit\&.
.RE
.PP

vacuumdb
also accepts the following command\-line arguments for connection parameters:
.PP
\fB\-h \fR\fB\fIhost\fR\fR, \fB\-\-host=\fR\fB\fIhost\fR\fR
.RS 4
Specifies the host name of the machine on which the server is running\&. If the value begins with a slash, it is used as the directory for the Unix domain socket\&.
.RE
.PP
\fB\-p \fR\fB\fIport\fR\fR, \fB\-\-port=\fR\fB\fIport\fR\fR
.RS 4
Specifies the TCP port or local Unix domain socket file extension on which the server is listening for connections\&.
.RE
.PP
\fB\-U \fR\fB\fIusername\fR\fR, \fB\-\-username=\fR\fB\fIusername\fR\fR
.RS 4
User name to connect as\&.
.RE
.PP
\fB\-w\fR, \fB\-\-no\-password\fR
.RS 4
Never issue a password prompt\&. If the server requires password authentication and a password is not available by other means such as a
\&.pgpass
file, the connection attempt will fail\&. This option can be useful in batch jobs and scripts where no user is present to enter a password\&.
.RE
.PP
\fB\-W\fR, \fB\-\-password\fR
.RS 4
Force
vacuumdb
to prompt for a password before connecting to a database\&.
.sp
This option is never essential, since
vacuumdb
will automatically prompt for a password if the server demands password authentication\&. However,
vacuumdb
will waste a connection attempt finding out that the server wants a password\&. In some cases it is worth typing
\fB\-W\fR
to avoid the extra connection attempt\&.
.RE
.SH "ENVIRONMENT"
.PP
\fBPGDATABASE\fR, \fBPGHOST\fR, \fBPGPORT\fR, \fBPGUSER\fR
.RS 4
Default connection parameters
.RE
.PP
This utility, like most other
PostgreSQL
utilities, also uses the environment variables supported by
libpq
(see
Section 31.13, \(lqEnvironment Variables\(rq, in the documentation)\&.
.SH "DIAGNOSTICS"
.PP
In case of difficulty, see
\fBVACUUM\fR(7)
and
\fBpsql\fR(1)
for discussions of potential problems and error messages\&. The database server must be running at the targeted host\&. Also, any default connection settings and environment variables used by the
libpq
front\-end library will apply\&.
.SH "NOTES"
.PP

vacuumdb
might need to connect several times to the
PostgreSQL
server, asking for a password each time\&. It is convenient to have a
~/\&.pgpass
file in such cases\&. See
Section 31.14, \(lqThe Password File\(rq, in the documentation
for more information\&.
.SH "EXAMPLES"
.PP
To clean the database
test:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBvacuumdb test\fR
.fi
.if n \{\
.RE
.\}
.PP
To clean and analyze for the optimizer a database named
bigdb:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBvacuumdb \-\-analyze bigdb\fR
.fi
.if n \{\
.RE
.\}
.PP
To clean a single table
foo
in a database named
xyzzy, and analyze a single column
bar
of the table for the optimizer:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBvacuumdb \-\-analyze \-\-verbose \-\-table \*(Aqfoo(bar)\*(Aq xyzzy\fR
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
\fBVACUUM\fR(7)
